<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
    //    利用构造函数创建对象
    //    需要创建四大天王的对象 相同的属性：名字 年龄 性别  相同的方法：唱歌
    //    构造函数语法格式
    //    function 构造函数名(){
    //     this.属性 = 值；
    //     this.方法 = function(){}
    //    }
    //    new 构造函数名();


// 1构造函数  明星 泛指某一大类 类似于java里面的   类（class）
       function Star(uname,age,sex) {
        this.name=uname;
        this.age=age;
        this.sex=sex;
        this.sing = function (sang) {
            console.log(sang);
        }
       }
    //    2对象  特指 是一个具体的事物  刘德华==
       var ldh = new Star('刘德华',18,'男');//调用函数返回的是一个对象
       console.log(typeof idh);
       console.log(ldh.name);
       console.log(ldh['sex']);
       ldh.sing('冰雨');
       var zxy = new Star('张学友',19,'男');
       console.log(zxy.name);
       console.log(zxy.age);
       zxy.sing('李香兰');
// 3利用构造函数创建对象的过程称为对象的实例化


       //1.构造函数名首字母要大写
       //2.构造函数不需要return就可以返回结果
       //3.调用构造函数必须使用new  
       //4.只要new Star() 调用函数就创建一个对象ldh {}
       //5.属性和方法前面必须加this
       function Hero(uname,type,blood) {
         this.name = uname;
         this.type = type;
         this.blood = blood;
         this.attrack =function(skill) {
            console.log(skill);
         }
       }
       var lp = new Hero('廉颇','力量型','500血量');
        console.log(lp.name);
        console.log(lp.type);
        console.log(lp.blood);
        lp.attrack('攻击：近战');
        var hy = new Hero('后裔','射手型','100血量');
        console.log(hy.name);
        console.log(hy.type);
        console.log(hy.blood);
        hy.attrack('攻击：远程');
    </script>
</head>
<body>
    
</body>
</html>